package com.czh.intelligentoj.judge.codesandbox;

import com.czh.intelligentoj.judge.codesandbox.impl.ExampleCodeSandbox;
import com.czh.intelligentoj.judge.codesandbox.impl.RemoteCodeSandbox;
import com.czh.intelligentoj.judge.codesandbox.impl.ThirdCodeSandbox;

/*
 * ClassName: CodeSandboxFactory
 * Package: com.czh.intelligentoj.judge
 * Description:
 *          代码沙箱工厂
 *          有三种类型 example, remote, Third
 *          根据类型返回对应的CodeSandbox接口
 * @Author: CZH
 * @Create: 2025
 */
public class CodeSandboxFactory {
    /**
     * @Description: 根据类型创建对应的CodeSandbox对象
     * @param type 类型
     * @return
     */
    public static CodeSandbox newInstance(String type ) {
        switch (type) {
            case "example":
                //返回 ExampleCodeSandbox 对象
                return new ExampleCodeSandbox();
            case "remote":
                //返回 RemoteCodeSandbox 对象
                return new RemoteCodeSandbox();
            case "Third":
                //返回 ThirdCodeSandbox 对象
                return new ThirdCodeSandbox();
            default:
                //如果未指定则默认返回 ExampleCodeSandbox 对象
                return new ExampleCodeSandbox();
        }
    }
}
